/*
 * @lc app=leetcode.cn id=941 lang=typescript
 *
 * [941] 有效的山脉数组
 */

// @lc code=start
// 操，被骗了双指针，其实判断上升，下降一便也可以
function validMountainArray(arr: number[]): boolean {
    if (arr.length < 3) return false;
    let i = 0;
    let j = arr.length - 1;
    let last_i = -Infinity;
    let last_j = -Infinity;
    while (i < arr.length) {
        if (arr[i] === last_i) return false;
        if (arr[i] > last_i) {
            last_i = arr[i];
            i++;
        } else {
            i = i - 1;
            break;
        }
    }
    while (j < arr.length) {
        if (arr[j] === last_j) return false;
        if (arr[j] > last_j) {
            last_j = arr[j];
            j--;
        } else {
            j = j + 1; // 返回最大值点
            break;
        }
    }

    if (
        last_i === last_j &&
        i === j &&
        // 坑点，递增序列不是山
        i !== 0 &&
        i !== arr.length - 1
    ) {
        return true;
    } else {
        return false;
    }
}
// @lc code=end
